package com.qingcheng.controller.goods;

import com.alibaba.dubbo.config.annotation.Reference;
import com.qingcheng.entity.PageResult;
import com.qingcheng.pojo.Brand;
import com.qingcheng.pojo.Result;
import com.qingcheng.service.goods.BrandService;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * @ProjectName: qingcheng_parent
 * @ClassName: BrandController
 * @Time: 2019/6/20
 * @Author: zhou24
 * @Description:
 * @Experience:
 */
@RestController
@RequestMapping("/brand")
public class BrandController {
    @Reference
    private BrandService brandService;

    /**
     * 查询所有
     * @return List<Brand>
     */
    @GetMapping("/findAll")
    public List<Brand> findAll() {
        return brandService.findAll();
    }

    /**
     * 条件查询
     * @param searchMap 条件对象
     * @return List<Brand>
     */
    @PostMapping("/findList")
    public List<Brand> findList(@RequestBody Map<String,Object> searchMap){
        return brandService.findList(searchMap);
    }

    /**
     * 分页查询
     * @param page 页码
     * @param size 大小
     * @return PageResult<Brand>
     */
    @GetMapping("/findPage")
    public PageResult<Brand> findPage(int page, int size) {
        return brandService.findPage(page, size);
    }

    /**
     * 建议用VO封装对象接受参数。对象里不要有属性。
     * 传参时get/post不能共存（本案例为错误示范）。
     * 下面的是错误案例
     * @param searchMap
     * @param page
     * @param size
     * @return
     */
    @PostMapping("/findPage")
    public PageResult<Brand> findPage(@RequestBody Map<String,Object> searchMap,int page,
                                      int size){
        return brandService.findPage(searchMap,page,size);
    }

    /**
     *根据Id查询
     * @param id
     * @return
     */
    @GetMapping("/findById")
    public Brand findById(Integer id){
        return brandService.findById(id);
    }

    /**
     * 添加品牌
     * @param brand 品牌
     * @return
     */
    @PostMapping("/add")
    public Result add(@RequestBody Brand brand){
        brandService.add(brand);
        return new Result();
    }

    /**
     * 修改品牌
     * @param brand 品牌
     * @return Result
     */
    @PostMapping("/update")
    public Result update(@RequestBody Brand brand){
        brandService.update(brand);
        return new Result();
    }

    /**
     * 根据Id删除品牌
     * @param id 品牌Id
     * @return
     */
    @GetMapping("/delete")
    public Result delete(Integer id){
        brandService.delete(id);
        return new Result();
    }

}
